769B - News About Credit - CodeForces Solution


*special problem greedy two pointers *1200

Please click on ads to support us..

Python Code:

n = int(input())
l = list(map(int, input().split()))

a = [[l[i], i + 1] for i in range(n)]
a = [a[0]] + sorted(a[1:], key = lambda a: a[0], reverse = True)

f, t = 0, 1
p = []

while t < n:
	if a[f][0] == 0:
		t = 0
		break
	
	p.append([a[f][1], a[t][1]])	
	a[f][0] -= 1
	t += 1
	
	if a[f][0] == 0:
		f += 1
		
print(t - 1)

if t > 0:
	for i in p:
		print(i[0], i[1])


Comments

Submit
0 Comments
More Questions

892A - Greed
32A - Reconnaissance
1236D - Alice and the Doll
1207B - Square Filling
1676D - X-Sum
1679A - AvtoBus
1549A - Gregor and Cryptography
918C - The Monster
4B - Before an Exam
545B - Equidistant String
1244C - The Football Season
1696B - NIT Destroys the Universe
1674A - Number Transformation
1244E - Minimizing Difference
1688A - Cirno's Perfect Bitmasks Classroom
219A - k-String
952A - Quirky Quantifiers
451B - Sort the Array
1505H - L BREAK into program
171E - MYSTERIOUS LANGUAGE
630D - Hexagons
1690D - Black and White Stripe
1688D - The Enchanted Forest
1674C - Infinite Replacement
712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC